package com.gitee.ed.pattern.strategy;

/**
 * 抽象策略类
 * 策略模式就是为消除大量的 IF-ELSE 结构而生
 *
 * @author hongda.li
 */
public interface Strategy<Context> {

    /**
     * 针对给定的上下文，该策略是否支持处理
     * 该方法对应 IF-ELSE 结构中的判断逻辑部分
     *
     * @param context 上下文
     * @return 是否支持
     */
    boolean supported(Context context);

    /**
     * 当该策略支持此上下文时，实际执行的处理逻辑
     *
     * @param context 上下文
     */
    void invoke(Context context);
}
